<?php

/**
 * Created by PhpStorm.
 * User: Edik
 * Date: 2016/2/23
 * Time: 15:41
 */

namespace Admin\Model;

class MemberModel extends \Think\Model
{
    protected $insertFields = array('username','password','cpassword','is_use');

    // 添加修改管理员时用
    protected $_validate = array(
        array('username', 'require', '账号不能为空！', 1, 'regex', 3),
        array('username', '1,30', '账号的值最长不能超过 30 个字符！', 1, 'length', 3),
        // 下面的规则只有添加时生效，修改时不生效，第六个参数代表什么时候验证：1：添加时验证 2：修改时 3：所有情况都验证
        array('password', 'require', '密码不能为空！', 1, 'regex', 1),
        array('cpassword', 'password', '两次密码输入不一致！', 1, 'confirm', 3),
        array('status', 'number', '是否启用 1：启用0：禁用必须是一个整数！', 2, 'regex', 3),
        array('username', '', '账号已经存在！', 1, 'unique', 3),
    );

    function login($username, $password){
        $username=str_replace(array('"',"'",'`',',',')','(','='),'',$username);

        $member = $this->where("username = '".$username."'")->find();

        if($member == null){
            return 0;//用户不存在
        }elseif($member['password'] == md5($password.C('MD5'))){
            session('a_id', $member['id']);
            session('a_username', $member['username']);
            session('a_pwd', $member['password']);
            return 1;
        }else{
            return 2;
        }
    }

    public function search($pageSize = 20)
    {
        /**************************************** 搜索 ****************************************/
        $where = array();
        if($username = I('get.username'))
            $where['username'] = array('like', "%$username%");
        $is_use = I('get.is_use');
        if($is_use != '' && $is_use != '-1')
            $where['is_use'] = array('eq', $is_use);
        /************************************* 翻页 ****************************************/
        $count = $this->alias('a')->where($where)->count();
        $page = new \Think\Page($count, $pageSize);
        // 配置翻页的样式
        $page->setConfig('prev', '上一页');
        $page->setConfig('next', '下一页');
        $data['page'] = $page->show();
        /************************************** 取数据 ******************************************/
        $data['data'] = $this->alias('a')->where($where)->group('a.id')->limit($page->firstRow.','.$page->listRows)->select();
        return $data;
    }

    // 添加前
    protected function _before_insert(&$data, $option)
    {
        $data['password'] = md5($data['password'] . C('MD5'));
    }
    protected function _after_insert($data, $option)
    {
        $roleId = I('post.role_id');
        if($roleId)
        {
            $arModel = M('MemberRole');
            foreach ($roleId as $v)
            {
                $arModel->add(array(
                    'member_id' => $data['id'],
                    'role_id' => $v,
                ));
            }
        }
    }

    // 删除前
    protected function _before_delete($option)
    {
        if($option['where']['id'] == 1)
        {
            $this->error = '超级管理员不能被删除！';
            return FALSE;
        }
        // 在删除admin表中管理员的信息之前先删除admin_role表中这个管理员对应的数据s
        $arModel = M('MemberRole');
        $arModel->where(array('member_id'=>array('eq', $option['where']['id'])))->delete();
    }

    public function updatepwd($pwd){
        $data['password'] = md5($pwd.C('MD5'));
        return $this->where('id = '.session('a_id'))->save($data);
    }
}